package com.jsb.laundry.dao;

import com.jsb.laundry.model.dto.UpdUserInfoRequest;
import com.jsb.laundry.model.dto.UserInfoRequest;
import com.jsb.laundry.model.entity.TeamCentre;
import com.jsb.laundry.model.entity.Withdrawals;
import com.jsb.laundry.model.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface RiderUserInfoDao {
    /**
     * 账号密码登录
     *
     * @return
     */
    int userLogin();

    /**
     * 根据open_id查询用户
     *
     * @param openId
     * @return
     */
    String findByUserId(String openId);

    /**
     * 用户注册生成的个人信息
     *
     * @param userInfoRequest
     * @return
     */
    int addUser(UserInfoRequest userInfoRequest);

    /**
     * 根据userid查询个人信息
     *
     * @param userId
     * @return
     */
    LoginUserInfoVo.UserInfo findUserInfo(String userId);

    /**
     * 注册用户资金信息
     *
     * @param userId
     * @return
     */
    int addCapitalAccount(String userId);

    /**
     * 站点列表
     *
     * @return
     */
    List<ShopsSiteListVo> findBySite();

    /**
     * 修改个人信息
     *
     * @param userInfoRequest
     * @return
     */
    int updUserInfo(UpdUserInfoRequest userInfoRequest);

    /**
     * 查询骑手是否关注公众号
     *
     * @param userId
     * @return
     */
    int findByFollow(String userId);

    /**
     * 待结算列表
     *
     * @param userId
     * @return
     */
    List<CapitalAccountUnstLogListVo> capitalAccountUnstLogList(String userId);

    /**
     * 已结算
     *
     * @param userId
     * @return
     */
    List<CapitalAccountUnstLogListVo> capitalAccountLogList(String userId);

    /**
     * 题库列表
     *
     * @return
     */
    List<QuestionBankVo> findByList();

    /**
     * 查询所以题目
     *
     * @return
     */
    List<QuestionBankVo> findByLists();

    int addLog(@Param("userId") String userId, @Param("fraction") String fraction);

    /**
     * 查询用户答题次数
     *
     * @param userId
     * @return
     */
    int findByQuestionCount(String userId);

    /**
     * 向银行卡添加信息
     *
     * @param userId
     * @return
     */
    int addUserInfoForBank(String userId);

    /**
     * 查询用户绑定的站点
     *
     * @param userId
     * @return
     */
    String userSite(String userId);

    /**
     * 今日收入
     *
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    int todayMoney(@Param("userId") String userId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 今日单量
     *
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    int todayNumber(@Param("userId") String userId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查看邀请人是否是我们平台的用户
     *
     * @param inviterId
     * @return
     */
    String findByOpenId(String inviterId);

    /**
     * 添加邀请人
     *
     * @param inviterId
     * @param newUserId
     * @return
     */
    int addRiderPromotion(@Param("inviterId") String inviterId, @Param("newUserId") String newUserId);
    /**
     * 查看邀请人等级、和邀请人数、邀请人id
     * @param inviterId
     * @return
     */
    TeamCentre getRiderLevel(@Param("userId") String inviterId);
    /**
     * 改变邀请人等级
     * @param inviterId
     * @return
     */
    int updRiderLevel(@Param("userId") String inviterId,@Param("userLevel") Integer userLevel);
    /**
     * 获取邀请人的手下的等级
     * @param riderId
     * @return
     */
    List<String> getSubLevel(String riderId);

    /**
     * 查询邀请排行榜
     * @return
     */
    List<FindByPromotionVo> findByPromotion();

    /**
     * 查询团队当月业绩
     * @param userId
     * @return
     */
    List<FindByPromotionListVo> findByPromotionList(String userId);

    /**
     * 查询下我的上级
     * @param userId
     * @return
     */
    FindByParentIdVo findByParentId(String userId);

    /**
     * 查询我的客户列表
     * @param userId
     * @return
     */
    List<FindByMyCustomVo> findByMyCustom(String userId);

    /**
     * 提现列表
     * @param userId
     * @return
     */
    List<RiderWithdrawalLogVo> findByWithdrawalList(String userId);

    /**
     * 提现
     * @param batchNumber
     * @param userId
     * @param money
     * @return
     */
    int addWithdrawalLog(@Param("batchNumber")String batchNumber,@Param("userId")String userId,@Param("money")int money);

    /**
     * 查询用户金额和id
     * @param userId
     * @return
     */
    WithdrawalUserVo findByUserMoney(String userId);

    /**
     * 添加提现记录
     * @param withdrawals
     * @return
     */
    int addWithdrawalsLog(Withdrawals withdrawals);

    String getRiderInfo(String appUserId);

    String getUserInfoId(String appUserId);

    String getRiderInfoId(String inviterId);
    String findByQuestionInfo();
    int questionNumber(String userId);

    String findByIdNumber(String userId);

    /**
     * 查询用户类型 0骑手 1司机
     * @param userId
     * @return
     */
    String findByUserFlag(String userId);

    int getPhone(String phone);

    String getUserId(String userPhone);
}
